"""
设计一个用户的信息操作,方便后续的开展
"""
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import relationship
from app.config.database import AsyncBase as Base
from datetime import datetime
from sqlalchemy import Column, DateTime
from sqlalchemy.dialects.mysql import MEDIUMTEXT

class UserModel(Base):
    __tablename__ = 'user'
    """
        表的字段设计:
        id : 唯一字段,自增
        userID:唯一字段,默认uuid自己生成
        username : 用户名
        password : 密码
        email : 邮箱
        phone : 手机号
        role : 权限角色
        create_time : 创建时间
        update_time : 更新时间
    """
    # 保证前三个均是唯一的
    id = Column(Integer, primary_key=True, autoincrement=True)
    userID = Column(String(36), unique=True, nullable=False)
    username = Column(String(20), unique=True, nullable=False)
    password = Column(String(100), nullable=False)
    realname = Column(String(100), nullable=True)
    email = Column(String(50), nullable=False)
    phone = Column(String(20), nullable=False)
    address = Column(String(100), nullable=True) # 地址
    remake = Column(String(100), nullable=True) # 备注
    CardId = Column(String(100), nullable=True) # 身份证号
    PlayCardId = Column(String(100), nullable=True) # 银行卡号
    avatar = Column(String(100), nullable=True) # 头像
    status = Column(Integer, default=0) # 0-禁用 # 1-正常
    shcoolName = Column(String(100), nullable=True) # 学校名称
    shcoolAddress = Column(String(100), nullable=True) # 学校地址
    # 专业
    major = Column(String(100), nullable=True)
    sex = Column(Integer, default=0) # 0-女 # 1-男
    age = Column(Integer, default=0) # 年龄
    role = Column(Integer, nullable=False) # 0-超级管理员 # 1-管理员  # >=2普通用户根据不同的需求可以自主的设置
    create_time = Column(DateTime, default=datetime.now)
    update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now)